package com.jiang.starter.redis.channel;

import java.util.function.Consumer;

/**
 * Redis的发布订阅接口
 * 使用时创建一个接口继承该接口
 * 并添加@ChannelTopic注解指明Channel的主题
 * 即可在容器中获取该接口的实例并调用方法
 * @param <T>
 */
public interface Channel<T> {

    /**
     * 发布消息
     * @param message
     */
    void publish(T message);

    /**
     * 为该Channel添加消费者
     * 在有消息时会自动执行
     * @param consumer
     */
    void subscribe(Consumer<T> consumer);

    /**
     * 阻塞接收消息
     * @return 消息对象
     */
    T receive();

}
